/**
 * @file KnDataBase.h
 * @author w (w@163.com)
 * @brief 数据库操作基类
 * @version 0.1
 * @date 2024-04-26
 *
 * @copyright Copyright (c) 2024 xxxx公司
 *
 * @par 修改日志:
 * <table>
 * <tr><th>Date       <th>Version <th>Author  <th>Description
 * <tr><td>2024-04-26 <td>v1.0     <td>chen     <td>内容
 * </table>
 */
#pragma once
#include <iostream>
#include <memory>
#include <string>

/**
 * @brief 数据库操作基类
 *
 * @details
 */
class CDataBase {
public:
	/**
	 * @brief Destroy the CDataBase object
	 *
	 * @details
	 */
	virtual ~CDataBase() {
		// std::cout << " ~CDataBase()" << std::endl;
	}

	/**
	 * @brief 访问服务url返回查询结果
	 * @param [in] serverUrl 服务url
	 * @param [in] result 查询结果
	 * @return int 0 成功, -1 失败
	 *
	 * @details
	 */
	virtual int queryDataBase(const std::string serverUrl, std::string& result) = 0;
};

/**
 * @brief ES数据库类
 *
 * @details
 */
class CDataBaseES : public CDataBase {
public:
	/**
	 * @brief 向数据库获取试验应用恢复状态
	 * @param [in] serverUrl 试验应用恢复服务url
	 * @param [in] result 查询结果
	 * @return int 0 成功, -1 失败
	 *
	 * @details
	 */
	int queryDataBase(const std::string serverUrl, std::string& result) override;
};